using EasyElasticLogger.NETFramework.ES.Configuration;
using EasyElasticLogger.NETFramework.ES.Logging;
using System;
using System.Collections.Generic;

namespace DemoApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("EasyElasticLogger.NETFramework 静态类使用演示");

            // 1. 初始化日志记录器（在应用程序启动时执行一次）
            InitializeLogger();

            // 2. 在应用程序的不同部分使用静态日志记录器
            var userService = new UserService();
            userService.CreateUser("张三");

            var orderService = new OrderService();
            orderService.CreateOrder("订单001");

            Console.WriteLine("演示完成，按任意键退出...");
            Console.ReadKey();
        }

        static void InitializeLogger()
        {
            // 创建配置
            var config = new LoggerConfiguration
            {
                Enabled = true,
                IndexPrefix = "demo-app-log",
                ApplicationName = "DemoApplication",
                Cluster = new ClusterConfiguration
                {
                    Nodes = new List<string> { "http://localhost:9200" }
                    // 注意：在实际使用中，您需要提供有效的Elasticsearch连接信息
                }
            };

            // 初始化静态日志记录器
            ElasticLogger.Initialize(config);
            
            Console.WriteLine("日志记录器已初始化");
        }
    }

    /// <summary>
    /// 用户服务示例
    /// </summary>
    class UserService
    {
        public void CreateUser(string username)
        {
            try
            {
                // 模拟用户创建逻辑
                Console.WriteLine($"正在创建用户: {username}");
                System.Threading.Thread.Sleep(100); // 模拟处理时间

                // 使用静态日志记录器记录信息
                ElasticLogger.Info($"用户 {username} 创建成功", "UserService.CreateUser");
                
                Console.WriteLine($"用户 {username} 创建成功");
            }
            catch (Exception ex)
            {
                // 记录错误日志
                ElasticLogger.Error($"创建用户 {username} 失败", ex, "UserService.CreateUser");
                Console.WriteLine($"创建用户 {username} 失败: {ex.Message}");
            }
        }
    }

    /// <summary>
    /// 订单服务示例
    /// </summary>
    class OrderService
    {
        public void CreateOrder(string orderId)
        {
            try
            {
                // 模拟订单创建逻辑
                Console.WriteLine($"正在创建订单: {orderId}");
                System.Threading.Thread.Sleep(100); // 模拟处理时间

                // 使用静态日志记录器记录信息
                ElasticLogger.Info($"订单 {orderId} 创建成功", "OrderService.CreateOrder");
                
                Console.WriteLine($"订单 {orderId} 创建成功");
            }
            catch (Exception ex)
            {
                // 记录错误日志
                ElasticLogger.Error($"创建订单 {orderId} 失败", ex, "OrderService.CreateOrder");
                Console.WriteLine($"创建订单 {orderId} 失败: {ex.Message}");
            }
        }
    }
}